/* Copyright 2009
 *
 * This program and the accompanying materials
 * are made available under the terms of the
 * Eclipse Public License v1.0 which accompanies
 * this distribution, and is available at
 *
 * 		http://www.eclipse.org/legal/epl-v10.html
 *
 * Unless required by applicable law or agreed to in
 * writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
 * OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * Contributors:
 * 	   IBM Corporation - initial API and implementation for JDT/DLTK
 *     Sean W. Quinn - initial adoption for use with PHP from various sources.
 */
package org.eclipse.php.internal.ui.preferences.formatter;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * A node representing a group of options in the tree.
 */
public class InnerNode extends Node {

    public InnerNode(InnerNode parent, Map workingValues, String messageKey) {
        super(parent, workingValues, messageKey);
    }

    @Override
	public void setChecked(boolean checked) {
        for (final Iterator iter = fChildren.iterator(); iter.hasNext();)
            ((Node)iter.next()).setChecked(checked);
    }

    public void add(Node child) {
        fChildren.add(child);
    }

    @Override
	public List getSnippets() {
        final ArrayList snippets= new ArrayList(fChildren.size());
        for (Iterator iter= fChildren.iterator(); iter.hasNext();) {
            final List childSnippets= ((Node)iter.next()).getSnippets();
            for (final Iterator chIter= childSnippets.iterator(); chIter.hasNext(); ) {
                final Object snippet= chIter.next();
                if (!snippets.contains(snippet))
                    snippets.add(snippet);
            }
        }
        return snippets;
    }

    @Override
	public void getCheckedLeafs(List list) {
        for (Iterator iter= fChildren.iterator(); iter.hasNext();) {
            ((Node)iter.next()).getCheckedLeafs(list);
        }
    }
}
